/**
 * 文案编辑模块
 */

var _dodyBox = null; //模块容器
var _textEditBox = null; //文本编辑模块
var _textEditBox_textarea = null; //文本编辑模块文本框对象
var _textEditBox_cancel = null; //文本编辑模块取消按钮对象
var _textEditBox_ok = null; //文本编辑模块确认按钮对象
var _EditOrCreate = 0; //编辑还是新建	0-新建 1-编辑
var _indexBtn = null; //操作按钮的索引
var _imgUploadObj = null; //图片上传插件对象
var _oldImgList = [];

/**
 * 返回待删图片
 */
function getOldImgList(){
	return _oldImgList;
};

/**
 * 清空待删图片
 */
function clearOldImgList(){
	_oldImgList = [];
};

/**
 * 初始化按钮
 */
function createBtn(addObj) {
	if (_dodyBox) {
		var btnhtml = '<div class="addTextOrImg">' +
			'	<div class="crtwbtn">插入图文</div>' +
			'	<div class="crtwseldiv">' +
			'		<div class="typeseldiv" data-type="0">' +
			'			<img src="img/wz.png" >' +
			'			<span>文字</span>' +
			'		</div>' +
			'		<div class="typeseldiv" data-type="1">' +
			'			<img src="img/img.png" >' +
			'			<span>图片</span>' +
			'		</div>' +
			'	</div>' +
			'</div>';
		if (addObj) {
			addObj.after(btnhtml);
		} else {
			_dodyBox.append(btnhtml);
		};	

		//图文插入点击
		$('.crtwbtn').unbind("click").click(function() {
			var _this = $(this);
			var nextobj = _this.next();
			_indexBtn = _this.parent().index();
			if (nextobj.css('display') == 'none') {
				nextobj.show();
			} else {
				nextobj.hide();
			};
		});

		//插入选择
		$('.typeseldiv').unbind("click").click(function() {
			var _this = $(this);
			_EditOrCreate = 0;
			if (_this.data('type') == 0) {
				//插入文字
				//判断文本编辑弹窗是否存在
				if (_textEditBox) {
					$('body').addClass('bdhide');
					_textEditBox.show();
					_textEditBox_textarea.val('');
					$('#text_num').html('0');
				} else {
					//文本编辑模块创建
					createTextEditBox(null);
				};
			} else {
				//插入图片
				$('#uplaodBtn>div>input').click();
			};
			_this.parent().hide();
		});
	};
};

/**
 * 文本编辑模块创建
 */
function createTextEditBox(text) {
	var textEditBoxHtml = '<div id="textEdit" class="dhua1">' +
		'	<div class="textEdit_top">'+
		'		<textarea class="textEdit_textarea" placeholder="请输入文字..." maxlength="1000"></textarea>'+
		'		<div class="textEdit_num"><span id="text_num">0</span>/<span>1000</span></div>'+
		'	</div>' +
		'	<div class="textEdit_btndiv">' +
		'		<div id="textEdit_cancel">取消</div>' +
		'		<div id="textEdit_ok">确定</div>' +
		'	</div>' +
		'</div>';
	$('body').append(textEditBoxHtml);
	_textEditBox = $('#textEdit');
	_textEditBox_textarea = $('.textEdit_textarea');
	_textEditBox_cancel = $('#textEdit_cancel');
	_textEditBox_ok = $('#textEdit_ok');

	if (text) {
		_textEditBox_textarea.val(text);
	};

	//取消点击
	_textEditBox_cancel.click(function() {
		_textEditBox.hide();
		$('body').removeClass('bdhide');
	});

	//确认点击
	_textEditBox_ok.click(function() {
		var val = _textEditBox_textarea.val();
		if (val) {
			if (_EditOrCreate == 0) {
				//创建内容模块
				createTextDiv(0, val);
			} else {
				//编辑
				var appendObj = _dodyBox.children().eq(_indexBtn); //编辑内容的位置
				if (appendObj) {
					appendObj.find('.duanluo_c').find('pre').html(val);
					_textEditBox.hide();
					$('body').removeClass('bdhide');
				};
			};
		} else {
			layer.msg('内容不能为空', {
				time: 2000
			});
		};

	});
	
	//多行文本框监听
	_textEditBox_textarea.bind("input propertychange",function(e){
		var param = $(this).val();
		var regRule = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi;
		$(this).val(param.replace(regRule,""));		
		$('#text_num').html($(this).val().length);
	});
};

/**
 * 创建内容模块
 * @param {Object} type 0-文本 1-图片
 * @param {Object} val 0-内容 1-路径
 */
function createTextDiv(type, val) {
	if (_indexBtn != null) {
		var appendObj = _dodyBox.children().eq(_indexBtn); //插入内容的位置
		if (val) {
			var html = '';
			if (type == 0) {
				html = '<div class="duanluo">' +
					'	<div class="duanluo_c" data-type="text"><pre>' + val + '</pre></div>' +
					'	<div class="duanluo_delete">' +
					'		<img src="img/delete.png" >' +
					'		删除' +
					'	</div>' +
					'	<div class="duanluo_edit">' +
					'		<img src="img/bianji.png" >' +
					'		编辑' +
					'	</div>' +
					'</div>';
			} else if (type == 1) {
				html = '<div class="duanluo">' +
					'	<div class="duanluo_c" data-type="img">' +
					'		<img src="' + val + '?x-oss-process=image/auto-orient,1" >' +
					'	</div>' +
					'	<div class="duanluo_delete">' +
					'		<img src="img/delete.png" >' +
					'		删除' +
					'	</div>' +
					'	<div class="duanluo_edit">' +
					'		<img src="img/tihuan.png" >' +
					'		替换' +
					'	</div>' +
					'</div>';
			};
			if (html) {
				appendObj.after(html);
								
				//创建按钮
				createBtn(appendObj.next());
				//绑定删除事件
				$('.duanluo_delete').unbind().click(function() {
					if($(this).parent().find('.duanluo_c').data('type') == 'img'){						
						var oldurl = $(this).parent().find('.duanluo_c').find('img').attr('src').replace('?x-oss-process=image/auto-orient,1','');
						_oldImgList.push(oldurl+'');
					}
					$(this).parent().next().remove();
					$(this).parent().remove();
				});
				//绑定编辑事件
				$('.duanluo_edit').unbind().click(function() {
					var _this = $(this).parent();
					_indexBtn = _this.index();
					var duanluo_obj = _this.find('.duanluo_c');
					_EditOrCreate = 1;
					if (_textEditBox && duanluo_obj.data('type') == 'text') {
						//文本编辑
						$('body').addClass('bdhide');
						_textEditBox.show();
						_textEditBox_textarea.val(duanluo_obj.find('pre').html());
						$('#text_num').html(_textEditBox_textarea.val().length);
					} else if (_imgUploadObj && duanluo_obj.data('type') == 'img') {
						//图片替换
						$('#uplaodBtn>div>input').click();
					};
				});
				
				if (type == 0) {
					_textEditBox.hide();
					$('body').removeClass('bdhide');
				};
			};
		};
	};
};


/**
 * 初始化上传组件
 */
function uploadinit() {
	$('body').append('<div id="uplaodBtn"></div>');
	_imgUploadObj = WebUploader.create({
		// 是否开起分片上传。
		chunked: false,
		//选择完文件或是否自动上传
		auto: true,
		// // 上传并发数。允许同时最大上传进程数[默认值：3]   即上传文件数
		// threads: 1,
		//文件接收服务端接口
		server: ym + jkMap.headimg, //后台接收地址
		formData: {
			uploadType: 2
		},
		// 选择文件的按钮
		pick: {
			id: '#uplaodBtn',
			multiple: false
		},
		//上传请求的方法
		method: "POST",
		duplicate :true ,
		// 不压缩image, 默认如果是jpeg，文件上传前会压缩一把再上传！
		resize: false,
		//指定接受哪些类型的文件
		accept: {
			title: 'Images',
			extensions: 'gif,jpg,jpeg,bmp,png',
			mimeTypes: 'image/*'
		}
	});

	//上传成功监听
	_imgUploadObj.on('uploadSuccess', function(_file, _call) {
		//显示上传图片
		console.log('上传图片成功', _file, _call);
		if (_call.status == 1) {
			if(_EditOrCreate == 0){
				//插入图片
				createTextDiv(1, _call.url);
			}else{
				//替换图片
				var appendObj = _dodyBox.children().eq(_indexBtn); //插入内容的位置
				var oldurl = appendObj.find('.duanluo_c').find('img').attr('src').replace('?x-oss-process=image/auto-orient,1','');//被替换的图片路径
				appendObj.find('.duanluo_c').find('img').attr('src',_call.url+'?x-oss-process=image/auto-orient,1');
				_oldImgList.push(oldurl);
			};
		} else {
			layer.msg(_call.result.message, {
				time: 2000
			});
		};
	});

	//上传失败监听
	_imgUploadObj.on('uploadError', function() {
		//提示
		layer.msg('上传失败', {
			time: 2000
		});
	});
};

/**
 * 文案内容采集
 */
function getContent() {
	var obj = []; //内容集合
	if ($('.duanluo_c').length > 0) {
		$('.duanluo_c').each(function() {
			var data = {};
			var type = $(this).data('type');
			var content = '';
			if (type == 'text') {
				content = $(this).find('pre').html();
			} else if (type == 'img') {
				content = $(this).find('img').attr('src').replace('?x-oss-process=image/auto-orient,1','');
			};
			if(content){				
				data.type = type;
				data.content = content;
				obj.push(data);
			};
		});
	};
	return obj.length > 0 ? obj : '';
};

/**
 * 文案内容回填
 * @param {Object} list
 */
function setContent(list){
	if(list.length>0){
		list.forEach(function(o){
			if(o.content){				
				_indexBtn = $('#article-body>*').length - 1;
				createTextDiv(o.type == 'text' ? 0 : 1, o.content);
			};
		});
	};
};


/**
 * 初始化
 * @param {Object} obj
 */
function editInit(obj) {
	_dodyBox = $(obj.el);

	//初始化按钮
	createBtn();
	
	//文本编辑模块创建
	createTextEditBox(null);
	
	//初始化上传插件
	uploadinit();
};
